package com.solution.admin.coupon.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.solution.admin.coupon.entity.CouponEntity;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 优惠券信息接口service接口层
 * 
 * @author xu_cc
 * @date 2017-11-16 11:11:20
 */
public interface CouponService {

    /**
     * 优惠券使用（将已领取的优惠券标识为已用，插入使用记录）
     * 
     * @param couponGetId
     * @param billCode
     * @param couponId
     *            清空缓存用
     * @return int
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月17日 上午11:32:31
     */
    public int doUseCoupon(Long couponGetId, String userCode, String billCode, Long couponId) throws Exception;

    /**
     * 保存优惠券信息
     * 
     * @param couponEntity
     *            优惠券信息实体
     * @return Long 返回插入优惠券信息记录ID
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public long saveCoupon(CouponEntity couponEntity);

    /**
     * 删除优惠券信息
     * 
     * @param
     * @return int 返回删除记录条数
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public int deleteCouponById(long id);

    /**
     * 根据ID查询优惠券信息
     * 
     * @param id
     *            优惠券信息id
     * @return CouponEntity 优惠券信息对象
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public CouponEntity getCouponById(Long id);

    /**
     * 更新优惠券信息
     * 
     * @param CouponEntity
     *            优惠券信息对象
     * @return int 更新是否成功，>1代表更新成功
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public int updateCoupon(CouponEntity couponEntity);

    /**
     * 分页查询优惠券信息
     * 
     * @param pageParam
     *            分页参数
     * @param paramMap
     *            查询参数
     * @return PageBean 分页参数和分页数据
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public PageBean listCouponPage(PageParam pageParam, Map<String, Object> paramMap);

    /**
     * 根据条件查询优惠券信息
     * 
     * @param param
     * @return 优惠券信息列表
     * @author xu_cc
     * @date 2017-11-16 11:11:20
     */
    public List<CouponEntity> listCoupon(Map<String, Object> param);
    
    /**
     * 用于下拉列表（活动赠优惠券）
     * 
     * @param param
     * @return List<CouponEntity>
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月21日 下午4:39:04
     */
    public List<CouponEntity> listByPromotionCombo(Date beginTime, Date endTime);
    
    /**
     * 查询可发放优惠券用户
     * @param pageParam
     * @param paramMap
     * @return
     * @author xkl
     * @date 2017年12月23日 下午2:04:20
     */
    public PageBean listCouponCustomerPage(PageParam pageParam, Map<String, Object> paramMap);

    /**
     * 查询客户的优惠券
     * @param param
     * @return
     */
	public List<CouponEntity> listUserCoupon(Map<String, Object> param);
    
    /**
     * 查询所有可发放优惠券用户
     * @param paramMap
     * @return
     * @author xkl
     * @date 2017年12月23日 下午2:04:20
     */
    public List<Map<String,Object>> listCouponCustomer(Map<String, Object> paramMap);

}
